<?php

class Application_Model_Users
{
	protected $_users;
	
  	public function __construct()
    {
	   $this->_users = new Zend_Db_Table('users');
    }
    
    public function setRole( $id , $Role = 'user' )
    {
    	$Row = $this->_users->find($id)->current();
    	$Row->Role = $Role;
    	$Row->save();
    }
    
    public function getForm($condition , $Data = array())
    {
        $form = new Zend_Form();
        
        
$trans = array(  
  Zend_Validate_Alnum::NOT_ALNUM => 'Введенное значение "%value%" неправильное. Разрешены только латинские символы и цифры',  
  Zend_Validate_Alnum::STRING_EMPTY => 'Поле не может быть пустым. Заполните его, пожалуйста',  
    
  Zend_Validate_Alpha::NOT_ALPHA => 'Введите в это поле только латинские символы',  
  Zend_Validate_Alpha::STRING_EMPTY => 'Поле не может быть пустым. Заполните его, пожалуйста',  
    
    
  Zend_Validate_Between::NOT_BETWEEN => '"%value%" не находится между "%min%" и "%max%", включительно',  
  Zend_Validate_Between::NOT_BETWEEN_STRICT => '"%value%" не находится строго между "%min%" и "%max%"',  
    
  Zend_Validate_Ccnum::LENGTH => '"%value%" должно быть численным значением от 13 до 19 цифр длинной',  
  Zend_Validate_Ccnum::CHECKSUM => 'Подсчёт контрольной суммы неудался. Значение "%value%" неверно',  
    
  Zend_Validate_Digits::NOT_DIGITS => 'Значение "%value%" неправильное. Введите только цифры',  
  Zend_Validate_Digits::STRING_EMPTY => 'Поле не может быть пустым. Заполните его, пожалуйста',  
    
  Zend_Validate_EmailAddress::INVALID => '"%value%" неправильный адрес електронной почты. Введите его в формате имя@домен',  
Zend_Validate_EmailAddress::INVALID_FORMAT => "Вы ввели неверный e-mail адрес. Введите e-mail в формате example@domain.com",  
    
    
  Zend_Validate_GreaterThan::NOT_GREATER => '"%value%" не превышает "%min%"',  
    
    
    
    
    
  Zend_Validate_Int::NOT_INT => '"%value%" не является целочисленным значением',  
    
    
  Zend_Validate_LessThan::NOT_LESS => '"%value%" не меньше, чем "%max%"',  
    
  Zend_Validate_NotEmpty::IS_EMPTY => 'Введённое значение пустое, заполните поле, пожалуйста',  
    
  Zend_Validate_Regex::NOT_MATCH => 'Значение "%value%" не подходит под шаблон регулярного выражения "%pattern%"',  
    
  Zend_Validate_StringLength::TOO_SHORT => 'Длина введённого значения "%value%", меньше чем %min% симв.',  
  Zend_Validate_StringLength::TOO_LONG => 'Длина введённого значения "%value%", больше чем %max% симв.'  
 ); 
 

        $translate = new Zend_Translate(
                                        'array',
                                        $trans,
                                        'ru'
                                       );
        Zend_Registry::set('Zend_Translate', $translate);
        
        $form->setMethod('post');
//        $form->setAction('add');
		$FirstName = $form->createElement('text', 'FirstName', array( 'label'=>'Имя:' ));
		$FirstName->addValidator('stringLength', false, array(3, 20))
         		 ->setRequired(true);
         		 
        $LastName = $form->createElement('text', 'LastName', array( 'label'=>'Фамилия:' ));
		$LastName->addValidator('stringLength', false, array(3, 20))
         		 ->setRequired(true);
         		 
 		$Sex = new Zend_Form_Element_Radio('Sex'); 
		$Sex->setLabel('Пол:') 
    		   ->addMultiOptions(array( 
     									'1' => 'Мужской', 
     									'0' => 'Женский' 
    									)) 
    		    ->setSeparator('<br/>'); 
    		    
    	$Age = $form->createElement('text', 'Age', array( 'label'=>'Возраст:' ));
		$Age->addValidator('int', false)
         		 ->setRequired(true);
         		 
        $Email = $form->createElement('text', 'Email', array( 'label'=>'E-Mail:' ));
		$Email->addValidator('EmailAddress', true)
         		 ->setRequired(true);
         		 
        $Login = $form->createElement('text', 'Login', array( 'label'=>'Логин:' ));
		$Login->addValidator('regex', false, array('/^[a-z]+/'))
       			 ->addValidator('stringLength', false, array(3, 20))
         		 ->setRequired(true);

		$Password = $form->createElement('password', 'Password',array( 'label' => 'Пароль:' ));
		$Password->addValidator('StringLength', false, array(6))
         		 ->setRequired(true);
 
        $PassConfirm = $form->createElement('password', 'PassConfirm',array( 'label' => 'Повтор:' ));
		$PassConfirm->addValidator('StringLength', false, array(6))
         		 ->setRequired(true);

        ( $condition ) ? $buttonName = 'Редактировать' : $buttonName = 'Добавить';  		 
        $Button = $form->createElement('submit' , 'add' , array('label' => $buttonName)); 		 
         		 
        if ( isset( $Data ) && $condition)
        {
        	$FirstName->setValue( $Data['FirstName'] );
        	$LastName->setValue( $Data['LastName'] );
        	$Email->setValue( $Data['Email'] );
        	$Sex->setValue( $Data['Sex'] );
        	$Age->setValue( $Data['Age'] );
        	$Login->setValue( $Data['Login'] );
        	$Password->setValue( $Data['Password'] );
        	
        } 		 
         		 
		$form->addElement($FirstName)
     		 ->addElement($LastName)
     		 ->addElement($Sex)
     		 ->addElement($Email)
     		 ->addElement($Age)
     		 ->addElement($Login)
     		 ->addElement($Password)
     		 ->addElement($PassConfirm)
     		 ->addElement($Button);
     	return $form;

    }
    
	public function setBan( $id , $Value = true )
    {
    	$Row = $this->_users->find($id)->current();
    	$Row->Bann = $Value;
    	$Row->save();
    }
    
	public function setApprove( $id , $Value )
    {
    	$Row = $this->_users->find($id)->current();
    	$Row->Approved = $Value;
    	$Row->save();
    }
    
	public function Remove( $id )
    {
    	$Row = $this->_users->find($id)->current();
    	if ( count( $Row ) )
    	{
    	   $Row->delete();    
    	}
    }
	
	public function addUser( $Data )
	{	
		$Row = $this->_users->createRow( $Data );
		$Row->save();
	}
	
	public function editUser( $Data )
	{	
		$Row = $this->_users->find($Data['id'])->current();
		if ( $Data['FirstName'] ) $Row->FirstName = $Data['FirstName'];
		if ( $Data['LastName'] ) $Row->LastName = $Data['LastName'];
		if ( $Data['Sex'] ) $Row->Sex = $Data['Sex'];
		if ( $Data['Age'] ) $Row->Age = $Data['Age'];
		if ( $Data['Email'] ) $Row->Email = $Data['Email'];
		if ( $Data['Login'] ) $Row->Login = $Data['Login'];
		if ( $Data['Password'] ) $Row->Password = $Data['Password']; 
		$Row->save();
	}
	
	public function setPassword( $Data )
	{	
		$Row = $this->_users->find($Data['id'])->current();
		if ( $Data['Password'] ) $Row->Password = $Data['Password'];
		$Row->save();
	}
	
	public function getAllUsers()
	{
		$Rows = $this->_users->fetchAll( $this->_users->select() );
		( $Rows ) ? $result = $Rows->toArray() : $result = array();
		return $result; 
		
	}
	
	public function getOneUser( $id )
	{
		$Row = $this->_users->find($id)->current();
		( $Row ) ? $result = $Row->toArray() : $result = array ();
		return $result;
	}
	
	
	public function getCurrentUser(  )
	{
		$auth = Zend_Auth::getInstance();
    	return $auth->getIdentity(); 
	}
	
	 


}

